@时光机
1年前 提问
1个回答

什么是双查询注入

一颗小胡椒
1年前

双查询注入简单来说就是嵌套子查询注入,子查询可以简单的理解在一个select语句里还有一个select,里面的这个select语句就是子查询。而攻击者发现当在一个聚合函数,比如count函数后面如果使用分组语句就会把查询的一部分以错误的形式显示出来,而利用这些报错信息则可以发动报错型注入,如果没有返回报错信息则可以尝试盲注。

sql 注入防范措施有以下这些:

  • 把应用服务器的数据库权限降至最低,尽可能地减少 SQL 注入攻击带来的危害。

  • 避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。

  • 对进入数据库的特殊字符(’’尖括号&*;等)进行转义处理,或编码转换。

  • 所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,即不要直接拼接SQL语句。

  • 在测试阶段,建议使用专门的 SQL 注入检测工具进行检测。网上有很多这方面的开源工具,例如sqlmap、SQLninja等。

  • 善用数据库操作库,有些库包可能已经做好了相关的防护,我们只需阅读其文档,看是否支持相应的功能即可。